package work.linruchang.mybatisplussamplestest.bean;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import lombok.experimental.Accessors;
import work.linruchang.mybatisplussamplestest.bean.param.OtherInfo;
import work.linruchang.mybatisplussamplestest.bean.param.Wallet;
import work.linruchang.mybatisplussamplestest.config.mybatisplus.typeHandler.HutooljsonTypeHandler;
import work.linruchang.mybatisplussamplestest.config.mybatisplus.typeHandler.WalletListTypeHandler;
import work.linruchang.mybatisplussamplestest.enums.GenderEnum;

import java.io.Serializable;
import java.util.List;

/**
 * 作用：系统用户信息表(sys_user)
 *
 * @author LinRuChang
 * @version 1.0
 * @date 2020/09/24
 * @since 1.8
 **/
@Data
@ToString(callSuper=true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@TableName(value = "sys_user", autoResultMap = true)
public class SysUser extends BaseDB<SysUser> implements Serializable {
    private static final long serialVersionUID = 2095940921263481761L;


    /**
     * 用户昵称 - 如果没有设置昵称直接使用账户名显示
     */
    private String nickName;

    /**
     * 头像图片地址
     */
    private String headUrl;

    /**
     * 账户名
     */
    private String loginName;

    /**
     * 手机号
     */
    private String phoneNumber;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 性别
     */
    private Integer gender;

    @TableField("gender")
    private GenderEnum genderEnum;

    /**
     * 个性签名
     */
    private String personalMotto;

    //@ApiModelProperty("我的分类专栏，逗号分隔 - article_category表的id")
    //private String myArticleCategory;


    /**
     * 最近登录时间 - 格式 - yyyyMMddHHmmss
     */
    private String lastLoginTime;


    /**
     * 登录状态：0未登录 1单设备登陆  2多设备登陆
     */
    private Integer loginStatus;


    /** 账户禁用状态：0账户可使用  1账户不可使用（封号） */
    private Integer disabledStatus;

    /**
     * 密码
     */
    private String password;


    /**
     * 租户
     */
    private String tenant;

    /**
     * 钱包
     *
     * 每个字段只会在mp中仅注册实例一次
     */
    @TableField(typeHandler = WalletListTypeHandler.class)
    private List<Wallet> wallets;

    /**
     * 其他信息
     *
     * 每个字段只会在mp中仅注册实例一次
     */
    @TableField(typeHandler = HutooljsonTypeHandler.class)
    private OtherInfo otherInfo;
}
